原始資料類型(Primitive Data Type)& 參考資料類型(Reference Data Type)


所謂「原始資料類型」,指的是該筆資料「確實」持有某個值,不會被更改;而「參考資料類型」,則只是「參考」記憶體中某位置的值,如果記憶體中的值被更改,就會連帶影響所有相關資料。


原始資料類型(primitive data type)

JavaScript 中共有 NumberStringBigIntBooleanNullundefinedSymbol 七種原始資料類型。
Number 為例,下列程式碼的輸出結果是什麼呢?

let num1 = 5;
let num2 = num1;
num1 += 6;

console.log(num2);

正確答案是 5。
num1 新的操作並不影響 num2 的結果,這是因為存取 num2 的值時,num2 自己便已經持有 5 這個數值,num1 怎麼變化都跟 num2 無關。


參考資料類型(reference data type)

除了上述七種之外的資料類型都屬「參考資料類型」,較常見的有物件、函數(也是一種物件)、陣列(依然是一種物件)等,若以陣列呈現類似上述範例的程式碼如下:

let arr1 = [1,2,3];
let arr2 = arr1;
arr1.push(4);

console.log(arr2);

顯示的結果變成[1,2,3,4]。
雖然操作的是 arr1,但因為 arr2 跟 arr1 讀取的是同一個記憶體位置,arr1 被更改也會連帶影響 arr2。

同樣地,如果更改 arr2 也會影響 arr1:

let arr1 = [1,2,3];
let arr2 = arr1;
arr2.push(5);

console.log(arr1);      //[1,2,3,5]
#javascript #原始資料類型 #參考資料類型







你可能感興趣的文章

簡明約耳續談軟體(More Joel on Software)導讀書摘

簡明約耳續談軟體(More Joel on Software)導讀書摘

How to Set Up Firewall with UFW on Ubuntu 20.04

How to Set Up Firewall with UFW on Ubuntu 20.04

JavaScript 的迴圈

JavaScript 的迴圈






留言討論